Increasingly, computer applications interact cooperatively across different network nodes. For example, on-line gaming typically features player client programs interacting with a gaming server that reconciles and responds to the actions taken by the different players. This distributed architecture, however, has proven highly susceptible to cheating. For example, some software developers provide unscrupulous users with computer programs that modify or replace the authorized client software. These programs can provide unfair advantages, for example, by replacing human interaction with computer generated responses (e.g., automated targeting). In multi-player games, this offers a very un-level playing field for gamers. On-line gaming is just one example of the difficulty in providing trusted computing in a distributed or otherwise unprotected environment.